// //计算一棵AVL树中所有节点的平衡因子的值
// #include <stdio.h>
// #include <stdlib.h>
// #include <stdbool.h>
// #include "windows.h"
//
// //自定义类型
// typedef int ElemData;
//
// //自定义树节点
// typedef struct TreeNode {
//     ElemData data;
//     struct TreeNode* left;
//     struct TreeNode* right;
// }TreeNode;
//
// //创建树节点
// TreeNode* CreateTreeNode(ElemData x) {
//     TreeNode* newNode=(TreeNode*)malloc(sizeof(TreeNode));
//     if(newNode==NULL) {
//         exit(1);
//     }
//     newNode->data=x;
//     newNode->left=newNode->right=NULL;
//     return newNode;
// }
//
// //插入树节点(二叉搜索树规则:注意)
// TreeNode* InsertTreeNode(TreeNode* root,ElemData x) {
//     if(root==NULL) {
//         return CreateTreeNode(x);
//     }
//     if(x<root->data) {
//         root->left=InsertTreeNode(root->left,x);
//     }else {
//         root->right=InsertTreeNode(root->right,x);
//     }
//     return root;
// }
//
// int height(TreeNode* root) {
//     if(root==NULL) {
//         return 0;
//     }
//     int leftheight=height(root->left);
//     int rightheight=height(root->right);
//     return (leftheight>rightheight?leftheight:rightheight)+1;
// }
//
// void Compb(TreeNode* root) {
//     if(root==NULL) {
//         return;
//     }
//     Compb(root->left);
//     int lefth=height(root->left);
//     int righth=height(root->right);
//     int balance=abs(lefth-righth);
//     printf("节点%d的平衡因子为:%d\n",root->data,balance);
//     Compb(root->right);
// }
//
// int main() {
//     SetConsoleOutputCP(CP_UTF8);
//     TreeNode* root = NULL;
//
//     // 构建测试树（示例1：平衡树）
//     root = InsertTreeNode(root, 4);
//     InsertTreeNode(root, 2);
//     InsertTreeNode(root, 6);
//     InsertTreeNode(root, 1);
//     InsertTreeNode(root, 3);
//     InsertTreeNode(root, 5);
//     InsertTreeNode(root, 7);
//
//     // 计算平衡因子
//     printf("平衡二叉搜索树测试：\n");
//     Compb(root);
//
//     // 构建测试树（示例2：非平衡树）
//     TreeNode* unbalancedRoot = NULL;
//     unbalancedRoot = InsertTreeNode(unbalancedRoot, 1);
//     InsertTreeNode(unbalancedRoot, 2);
//     InsertTreeNode(unbalancedRoot, 3);
//     InsertTreeNode(unbalancedRoot, 4);
//     InsertTreeNode(unbalancedRoot, 5);
//     InsertTreeNode(unbalancedRoot, 6);
//     InsertTreeNode(unbalancedRoot, 7);
//
//     printf("\n非平衡树测试：\n");
//     Compb(unbalancedRoot);
//     return 0;
// }